package org.pb.user.controller;

import org.pb.basic.utils.AjaxResult;
import org.pb.user.service.IVerifyCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * 验证码接口
 * @author pb
 */
@RestController
@RequestMapping("/verifycode")
public class VerifyCodeController {

    @Autowired
    private IVerifyCodeService verifyCodeService;

    /**
     * 接受前端发送的短信验指令，根据指令返回对应的信息
     * @param map 接受前端的json数据，通过map集合进行映射接收
     * @return 返回最后的处理结果
     */
    @PostMapping("/smsCode")
    public AjaxResult smsMessage(@RequestBody Map<String, String> map) {
        try {
            // 获取map中对应key为phone的value值，获取到对应的手机号信息
            String phone = map.get("phone");
            // 执行短信验证码的操作指令
            verifyCodeService.sendVerifyCode(phone);
            // 如果没有出现异常，则证明验证码发送成功
            return AjaxResult.successWithMessage("验证码发送成功");
        } catch (Exception e) {
            e.printStackTrace();
            // 如果出现了异常，则表示验证码发送失败
            return AjaxResult.failedWithMessage(e.getMessage());
        }
    }

    /**
     * 接受前端发送的短信验指令，根据指令返回对应的信息
     * @param map 接受前端的json数据，通过map集合进行映射接收
     * @return 返回最后的处理结果
     */
    @PostMapping("/binderCode")
    public AjaxResult binderMessage(@RequestBody Map<String, String> map) {
        try {
            // 获取map中对应key为phone的value值，获取到对应的手机号信息
            String phone = map.get("phone");
            // 执行短信验证码的操作指令
            verifyCodeService.sendBinderVerifyCode(phone);
            // 如果没有出现异常，则证明验证码发送成功
            return AjaxResult.successWithMessage("验证码发送成功");
        } catch (Exception e) {
            e.printStackTrace();
            // 如果出现了异常，则表示验证码发送失败
            return AjaxResult.failedWithMessage(e.getMessage());
        }
    }

}
